1. Field of the Invention
The invention relates generally to storage systems and more specifically relates to methods and structure for direct pass through of “fast path” I/O requests in a storage system.
2. Related Patents
This patent is related to commonly owned, co-pending U.S. patent application Ser. No. 13/432,213, filed 28 Mar. 2012, and entitled “METHODS AND STRUCTURE FOR IMPROVED PROCESSING OF I/O REQUESTS IN FAST PATH CIRCUITS OF A STORAGE CONTROLLER IN A CLUSTERED STORAGE SYSTEM” which is hereby incorporated by reference.
3. Discussion of Related Art
In the field of data storage, customers demand high performance as well as highly resilient data storage systems that also exhibit fast recovery times for stored data. In general, Redundant Arrays of Independent Drives (RAID) storage systems are common to provide both enhanced performance and reliability. Performance is enhanced by “striping”. Striping distributes blocks of data and associated redundancy information over a plurality of drives so that a read or write operation is more rapidly completed by parallel operation of the plurality of disk drives. Reliability is enhanced by the addition of redundancy information (e.g., XOR parity blocks such as in RAID level 5 management).
Such RAID storage management requires some logical to physical mapping capability in that a RAID logical volume—with striping and/or redundancy information—is presented to a host system as a single logical device having improved performance and reliability as compared to any single disk drive. RAID storage management within a RAID storage controller then maps the logical addresses associated with the logical volume into corresponding physical storage locations of one or more physical devices (i.e., disk drives) of the logical volume that are affected by the request.
Some storage systems provide storage controllers tightly coupled with corresponding drivers in attached host systems (e.g., where the storage controller is a host bus adapter “HBA” within the host system). In some such controllers, the storage controller provides multiple types of interface capabilities (i.e., multiple APIs to the host system). A standard interface (e.g., a first interface API) may be provided to the host system wherein the driver constructs an I/O request directed to a logical volume (e.g., directed to a RAID logical volume). The I/O request addresses logical block addresses of the logical volume. The storage controller then uses a mapping structure within the controller to map the I/O request to corresponding physical storage locations on the one or more storage devices that comprise the logical volume. For these requests, the storage controller also manages all related redundancy computations and management of associated redundancy information (i.e., for RAID logical volumes). The storage controller also manages computations related to mapping from logical addresses of the identified logical volume to physical addresses or affected storage devices.
Although these storage controllers can provide significant computational power to perform the requisite logical to physical mapping and any required redundancy computations, it is often the case that the host systems possess significantly more computational resources and power than do any of the multiple storage controllers of the storage system. Thus, in such tightly coupled driver-controller configurations, the storage controller may also provide an optional bypass mechanism (e.g., a second interface API) that directs I/O requests to a special purpose circuit of the storage controller optimized for rapidly performing lower level I/O operations directly on the individual physical storage device. In such a structure, the driver software on an attached host system may perform the logical to physical mapping computations and may also provide the redundancy computations to help manage associated redundancy information. For example, in some LSI Corporation storage controllers such a bypass mechanism is referred to as a “fast path” interface. In these controllers, the “fast path” driver software of the attached host system constructs I/O requests destined directly to the relevant physical locations of the physical storage devices that comprise the logical volume. The special purpose “fast path” processor circuit of the storage controller then performs the physical I/O operations as directed by the enhanced driver software of the host system.
The storage controller providing such a “fast path” option provides the driver software with essentially the same mapping information that the storage controller uses for mapping logical addresses of a logical volume to physical addresses of the storage devices of the volume. Fast path enabled LSI storage controllers and circuits generally implement the “fast path” as a custom designed circuit that can process the driver's I/O requests to physical storage devices very quickly (since the controller need not perform the mapping and RAID redundancy computations).
Problems arise, however, when the mapping information that the host driver uses does not correspond to the mapping information that the controller uses. For example, the controller may update the mapping information when a storage device of the logical volume fails, is removed from the logical volume, etc. When the mapping information at the controller changes, the mapping information in the driver software of attached host systems is eventually updated by the corresponding attached storage controller to specify the storage controller. However, it is a problem if the driver has already issued a number of “fast path” requests after the storage controller has updated the mapping information, but prior to receiving an update of the mapping information. Further, the driver software of a host system may continue to issue requests (via the “fast path” to the storage controller) before receiving its update of the mapping structures. These problems are further exacerbated when a storage controller is a component of a clustered storage system in which multiple storage controllers and multiple associated host systems all require synchronization of their respective mapping information to enable “fast path” I/O request generation and processing.
Thus it is an ongoing challenge to rapidly determine and recover from mapping information inconsistencies between a host system and the storage controller when the host system uses stale or outdated mapping information when generating fast path I/O requests.